home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Tool Chest / Text / WASTE / WASTE 1.1.2 Distribution / Pseudo-UPI for THINK Pascal / Script.p < prev    next >
Encoding:
Text File  |  1995-10-12  |  32.5 KB  |  850 lines  |  [TEXT/PJMM]

  1. unit Script;
  2.  
  3. { Pascal Interface to the Macintosh Libraries }
  4.  
  5. { Copyright © Apple Computer Inc. }
  6. { All Rights Reserved }
  7.  
  8. { Adapted for use with THINK Pascal 4.0.x by Marco Piovanelli }
  9.  
  10. interface
  11.     uses
  12.         Types;
  13.  
  14.     const
  15.  
  16. { Script System constants }
  17.  
  18.         smSystemScript = -1;                            {designates system script.}
  19.         smCurrentScript = -2;                            {designates current font script.}
  20.         smAllScripts = -3;                            {designates any script    }
  21.         smRoman = 0;                            {Roman}
  22.         smJapanese = 1;                            {Japanese}
  23.         smTradChinese = 2;                            {Traditional Chinese}
  24.         smKorean = 3;                            {Korean}
  25.         smArabic = 4;                            {Arabic}
  26.         smHebrew = 5;                            {Hebrew}
  27.         smGreek = 6;                            {Greek}
  28.         smCyrillic = 7;                            {Cyrillic}
  29.         smRSymbol = 8;                            {Right-left symbol}
  30.         smDevanagari = 9;                            {Devanagari}
  31.         smGurmukhi = 10;                            {Gurmukhi}
  32.         smGujarati = 11;                            {Gujarati}
  33.         smOriya = 12;                            {Oriya}
  34.         smBengali = 13;                            {Bengali}
  35.         smTamil = 14;                            {Tamil}
  36.         smTelugu = 15;                            {Telugu}
  37.         smKannada = 16;                            {Kannada/Kanarese}
  38.         smMalayalam = 17;                            {Malayalam}
  39.  
  40.         smSinhalese = 18;                            {Sinhalese}
  41.         smBurmese = 19;                            {Burmese}
  42.         smKhmer = 20;                            {Khmer/Cambodian}
  43.         smThai = 21;                            {Thai}
  44.         smLaotian = 22;                            {Laotian}
  45.         smGeorgian = 23;                            {Georgian}
  46.         smArmenian = 24;                            {Armenian}
  47.         smSimpChinese = 25;                            {Simplified Chinese}
  48.         smTibetan = 26;                            {Tibetan}
  49.         smMongolian = 27;                            {Mongolian}
  50.         smGeez = 28;                            {Geez/Ethiopic}
  51.         smEthiopic = 28;                            {Synonym for smGeez}
  52.         smEastEurRoman = 29;                            {Synonym for smSlavic}
  53.         smVietnamese = 30;                            {Vietnamese}
  54.         smExtArabic = 31;                            {extended Arabic}
  55.         smUninterp = 32;                            {uninterpreted symbols, e.g. palette symbols}
  56.         smKlingon = 32;                            {Klingon}
  57. {Obsolete names for script systems (kept for backward compatibility)}
  58.         smChinese = 2;                            {(use smTradChinese or smSimpChinese)}
  59.         smRussian = 7;                            {(old name for smCyrillic)}
  60. { smMaldivian = 25;         (no more smMaldivian!)}
  61.         smAmharic = 28;                            {(old name for smGeez)}
  62.         smSlavic = 29;                            {(old name for smEastEurRoman)}
  63.  
  64.         smSindhi = 31;                            {(old name for smExtArabic)}
  65. { Language Codes }
  66.         langEnglish = 0;                            { smRoman script }
  67.         langFrench = 1;                            { smRoman script }
  68.         langGerman = 2;                            { smRoman script }
  69.         langItalian = 3;                            { smRoman script }
  70.         langDutch = 4;                            { smRoman script }
  71.         langSwedish = 5;                            { smRoman script }
  72.         langSpanish = 6;                            { smRoman script }
  73.         langDanish = 7;                            { smRoman script }
  74.         langPortuguese = 8;                            { smRoman script }
  75.         langNorwegian = 9;                            { smRoman script }
  76.         langHebrew = 10;                            { smHebrew script }
  77.         langJapanese = 11;                            { smJapanese script }
  78.         langArabic = 12;                            { smArabic script }
  79.         langFinnish = 13;                            { smRoman script }
  80.         langGreek = 14;                            { smGreek script }
  81.         langIcelandic = 15;                            { extended Roman script }
  82.         langMaltese = 16;                            { extended Roman script }
  83.         langTurkish = 17;                            { extended Roman script }
  84.         langCroatian = 18;                            { Serbo-Croatian in extended Roman script }
  85.         langTradChinese = 19;                            { Chinese in traditional characters }
  86.  
  87.         langUrdu = 20;                            { smArabic script }
  88.         langHindi = 21;                            { smDevanagari script }
  89.         langThai = 22;                            { smThai script }
  90.         langKorean = 23;                            { smKorean script }
  91.         langLithuanian = 24;                            { smEastEurRoman script }
  92.         langPolish = 25;                            { smEastEurRoman script }
  93.         langHungarian = 26;                            { smEastEurRoman script }
  94.         langEstonian = 27;                            { smEastEurRoman script }
  95.         langLettish = 28;                            { smEastEurRoman script }
  96.         langLatvian = 28;                            { Synonym for langLettish }
  97.         langSaamisk = 29;                            { ext. Roman script, lang. of the Sami/Lapp people of Scand. }
  98.         langLappish = 29;                            { Synonym for langSaamisk }
  99.         langFaeroese = 30;                            { smRoman script }
  100.         langFarsi = 31;                            { smArabic script }
  101.         langPersian = 31;                            { Synonym for langFarsi }
  102.         langRussian = 32;                            { smCyrillic script }
  103.         langSimpChinese = 33;                            { Chinese in simplified characters }
  104.         langFlemish = 34;                            { smRoman script }
  105.         langIrish = 35;                            { smRoman script }
  106.         langAlbanian = 36;                            { smRoman script }
  107.  
  108.         langRomanian = 37;                            { smEastEurRoman script }
  109.         langCzech = 38;                            { smEastEurRoman script }
  110.         langSlovak = 39;                            { smEastEurRoman script }
  111.         langSlovenian = 40;                            { smEastEurRoman script }
  112.         langYiddish = 41;                            { smHebrew script }
  113.         langSerbian = 42;                            { Serbo-Croatian in smCyrillic script }
  114.         langMacedonian = 43;                            { smCyrillic script }
  115.         langBulgarian = 44;                            { smCyrillic script }
  116.         langUkrainian = 45;                            { smCyrillic script }
  117.         langByelorussian = 46;                            { smCyrillic script }
  118.         langUzbek = 47;                            { smCyrillic script }
  119.         langKazakh = 48;                            { smCyrillic script }
  120.         langAzerbaijani = 49;                            { Azerbaijani in smCyrillic script (USSR) }
  121.         langAzerbaijanAr = 50;                            { Azerbaijani in smArabic script (Iran) }
  122.         langArmenian = 51;                            { smArmenian script }
  123.         langGeorgian = 52;                            { smGeorgian script }
  124.         langMoldavian = 53;                            { smCyrillic script }
  125.         langKirghiz = 54;                            { smCyrillic script }
  126.         langTajiki = 55;                            { smCyrillic script }
  127.         langTurkmen = 56;                            { smCyrillic script }
  128.  
  129.         langMongolian = 57;                            { Mongolian in smMongolian script }
  130.         langMongolianCyr = 58;                            { Mongolian in smCyrillic script }
  131.         langPashto = 59;                            { smArabic script }
  132.         langKurdish = 60;                            { smArabic script }
  133.         langKashmiri = 61;                            { smArabic script }
  134.         langSindhi = 62;                            { smExtArabic script }
  135.         langTibetan = 63;                            { smTibetan script }
  136.         langNepali = 64;                            { smDevanagari script }
  137.         langSanskrit = 65;                            { smDevanagari script }
  138.         langMarathi = 66;                            { smDevanagari script }
  139.         langBengali = 67;                            { smBengali script }
  140.         langAssamese = 68;                            { smBengali script }
  141.         langGujarati = 69;                            { smGujarati script }
  142.         langPunjabi = 70;                            { smGurmukhi script }
  143.         langOriya = 71;                            { smOriya script }
  144.         langMalayalam = 72;                            { smMalayalam script }
  145.         langKannada = 73;                            { smKannada script }
  146.         langTamil = 74;                            { smTamil script }
  147.         langTelugu = 75;                            { smTelugu script }
  148.         langSinhalese = 76;                            { smSinhalese script }
  149.  
  150.         langBurmese = 77;                            { smBurmese script }
  151.         langKhmer = 78;                            { smKhmer script }
  152.         langLao = 79;                            { smLaotian script }
  153.         langVietnamese = 80;                            { smVietnamese script }
  154.         langIndonesian = 81;                            { smRoman script }
  155.         langTagalog = 82;                            { smRoman script }
  156.         langMalayRoman = 83;                            { Malay in smRoman script }
  157.         langMalayArabic = 84;                            { Malay in smArabic script }
  158.         langAmharic = 85;                            { smEthiopic script }
  159.         langTigrinya = 86;                            { smEthiopic script }
  160.         langGalla = 87;                            { smEthiopic script }
  161.         langOromo = 87;                            { Synonym for langGalla }
  162.         langSomali = 88;                            { smRoman script }
  163.         langSwahili = 89;                            { smRoman script }
  164.         langRuanda = 90;                            { smRoman script }
  165.         langRundi = 91;                            { smRoman script }
  166.         langChewa = 92;                            { smRoman script }
  167.         langMalagasy = 93;                            { smRoman script }
  168.         langEsperanto = 94;                            { extended Roman script }
  169.         langWelsh = 128;                            { smRoman script }
  170.  
  171.         langBasque = 129;                            { smRoman script }
  172.         langCatalan = 130;                            { smRoman script }
  173.         langLatin = 131;                            { smRoman script }
  174.         langQuechua = 132;                            { smRoman script }
  175.         langGuarani = 133;                            { smRoman script }
  176.         langAymara = 134;                            { smRoman script }
  177.         langTatar = 135;                            { smCyrillic script }
  178.         langUighur = 136;                            { smArabic script }
  179.         langDzongkha = 137;                            { (lang of Bhutan) smTibetan script }
  180.         langJavaneseRom = 138;                            { Javanese in smRoman script }
  181.         langSundaneseRom = 139;                            { Sundanese in smRoman script }
  182. { Obsolete names, kept for backward compatibility }
  183.         langPortugese = 8;                            { old misspelled version, kept for compatibility }
  184.         langMalta = 16;                            { old misspelled version, kept for compatibility }
  185.         langYugoslavian = 18;                            { (use langCroatian, langSerbian, etc.) }
  186.         langChinese = 19;                            { (use langTradChinese or langSimpChinese) }
  187.         langLapponian = 29;                            { Synonym for langSaamisk, not correct name }
  188.  
  189. { Regional version codes }
  190.         verUS = 0;
  191.         verFrance = 1;
  192.         verBritain = 2;
  193.         verGermany = 3;
  194.         verItaly = 4;
  195.         verNetherlands = 5;
  196.         verFrBelgiumLux = 6;                            { French for Belgium & Luxembourg }
  197.         verSweden = 7;
  198.         verSpain = 8;
  199.         verDenmark = 9;
  200.         verPortugal = 10;
  201.         verFrCanada = 11;
  202.         verNorway = 12;
  203.  
  204.         verIsrael = 13;
  205.         verJapan = 14;
  206.         verAustralia = 15;
  207.         verArabic = 16;                            { synonym for verArabia }
  208.         verFinland = 17;
  209.         verFrSwiss = 18;                            { French Swiss }
  210.         verGrSwiss = 19;                            { German Swiss }
  211.         verGreece = 20;
  212.         verIceland = 21;
  213.         verMalta = 22;
  214.         verCyprus = 23;
  215.         verTurkey = 24;
  216.         verYugoCroatian = 25;                            { Croatian system for Yugoslavia }
  217.         verNetherlandsComma = 26;
  218.         verBelgiumLuxPoint = 27;
  219.         verCanadaComma = 28;
  220.         verCanadaPoint = 29;
  221.         vervariantPortugal = 30;
  222.         vervariantNorway = 31;
  223.         vervariantDenmark = 32;
  224.         verIndiaHindi = 33;                            { Hindi system for India }
  225.         verPakistan = 34;
  226.         verTurkishModified = 35;
  227.         verGreekAncient = 40;
  228.         verLithuania = 41;
  229.         verPoland = 42;
  230.         verHungary = 43;
  231.         verEstonia = 44;
  232.         verLatvia = 45;
  233.  
  234.         verLapland = 46;
  235.         verFaeroeIsl = 47;
  236.         verIran = 48;
  237.         verRussia = 49;
  238.         verIreland = 50;                            { English-language version for Ireland }
  239.         verKorea = 51;
  240.         verChina = 52;
  241.         verTaiwan = 53;
  242.         verThailand = 54;
  243.         verCzech = 56;
  244.         verSlovak = 57;
  245.         verGenericFE = 58;
  246.         verMagyar = 59;
  247.         verBengali = 60;
  248.         verByeloRussian = 61;
  249.         verUkrania = 62;
  250.         verItalianSwiss = 63;
  251.         verAlternateGr = 64;
  252.  
  253.         minCountry = verUS;
  254.         maxCountry = verAlternateGr;                { changed from verThailand when additional enums added }
  255.  
  256. { Obsolete region code names, kept for backward compatibility }
  257.         verBelgiumLux = 6;                            { (use verFrBelgiumLux instead, less ambiguous) }
  258.         verArabia = 16;
  259.         verYugoslavia = 25;                            { (use verYugoCroatian instead, less ambiguous) }
  260.         verIndia = 33;                            { (use verIndiaHindi instead, less ambiguous) }
  261. { Calendar Codes }
  262.         calGregorian = 0;
  263.         calArabicCivil = 1;
  264.         calArabicLunar = 2;
  265.         calJapanese = 3;
  266.         calJewish = 4;
  267.         calCoptic = 5;
  268.         calPersian = 6;
  269. { Integer Format Codes }
  270.         intWestern = 0;
  271.         intArabic = 1;
  272.         intRoman = 2;
  273.         intJapanese = 3;
  274.         intEuropean = 4;
  275.         intOutputMask = $8000;
  276. { CharByte byte types }
  277.         smSingleByte = 0;
  278.         smFirstByte = -1;
  279.         smLastByte = 1;
  280.         smMiddleByte = 2;
  281. { CharType field masks }
  282.         smcTypeMask = $000F;
  283.         smcReserved = $00F0;
  284.  
  285.         smcClassMask = $0F00;
  286.         smcOrientationMask = $1000;                        {two-byte script glyph orientation}
  287.         smcRightMask = $2000;
  288.         smcUpperMask = $4000;
  289.         smcDoubleMask = $8000;
  290. { Basic CharType character types }
  291.         smCharPunct = $0000;
  292.         smCharAscii = $0001;
  293.         smCharEuro = $0007;
  294.         smCharExtAscii = $0007;                        { More correct synonym for smCharEuro }
  295. { Additional CharType character types for script systems }
  296.         smCharKatakana = $0002;                        {Japanese Katakana}
  297.         smCharHiragana = $0003;                        {Japanese Hiragana}
  298.         smCharIdeographic = $0004;                        {Hanzi, Kanji, Hanja}
  299.         smCharTwoByteGreek = $0005;                        {2-byte Greek in Far East systems}
  300.         smCharTwoByteRussian = $0006;                        {2-byte Cyrillic in Far East systems}
  301.         smCharBidirect = $0008;                        {Arabic/Hebrew}
  302.         smCharContextualLR = $0009;                        {Contextual left-right: Thai, Indic scripts}
  303.         smCharNonContextualLR = $000A;                        {Non-contextual left-right: Cyrillic, Greek}
  304.         smCharHangul = $000C;                        {Korean Hangul}
  305.         smCharJamo = $000D;                        {Korean Jamo}
  306.         smCharBopomofo = $000E;                        {Chinese Bopomofo}
  307. { old names for some of above, for backward compatibility }
  308.         smCharFISKana = $0002;                        {Katakana}
  309.         smCharFISGana = $0003;                        {Hiragana}
  310.         smCharFISIdeo = $0004;                        {Hanzi, Kanji, Hanja}
  311.  
  312.         smCharFISGreek = $0005;                        {2-byte Greek in Far East systems}
  313.         smCharFISRussian = $0006;                        {2-byte Cyrillic in Far East systems}
  314. { CharType classes for punctuation (smCharPunct) }
  315.         smPunctNormal = $0000;
  316.         smPunctNumber = $0100;
  317.         smPunctSymbol = $0200;
  318.         smPunctBlank = $0300;
  319. { Additional CharType classes for punctuation in two-byte systems }
  320.         smPunctRepeat = $0400;                        { repeat marker }
  321.         smPunctGraphic = $0500;                        { line graphics }
  322. { CharType Katakana and Hiragana classes for two-byte systems }
  323.         smKanaSmall = $0100;                        {small kana character}
  324.         smKanaHardOK = $0200;                        {can have dakuten}
  325.         smKanaSoftOK = $0300;                        {can have dakuten or han-dakuten}
  326. { CharType Ideographic classes for two-byte systems }
  327.         smIdeographicLevel1 = $0000;                        {level 1 char}
  328.         smIdeographicLevel2 = $0100;                        {level 2 char}
  329.         smIdeographicUser = $0200;                        {user char}
  330. { old names for above, for backward compatibility }
  331.         smFISClassLvl1 = $0000;                        {level 1 char}
  332.         smFISClassLvl2 = $0100;                        {level 2 char}
  333.         smFISClassUser = $0200;                        {user char}
  334. { CharType Jamo classes for Korean systems }
  335.         smJamoJaeum = $0000;                        {simple consonant char}
  336.         smJamoBogJaeum = $0100;                        {complex consonant char}
  337.         smJamoMoeum = $0200;                        {simple vowel char}
  338.  
  339.         smJamoBogMoeum = $0300;                        {complex vowel char}
  340. { CharType glyph orientation for two-byte systems }
  341.         smCharHorizontal = $0000;                        { horizontal character form, or for both }
  342.         smCharVertical = $1000;                        { vertical character form }
  343. { CharType directions }
  344.         smCharLeft = $0000;
  345.         smCharRight = $2000;
  346. { CharType case modifers }
  347.         smCharLower = $0000;
  348.         smCharUpper = $4000;
  349. { CharType character size modifiers (1 or multiple bytes). }
  350.         smChar1byte = $0000;
  351.         smChar2byte = $8000;
  352. { TransliterateText target types for Roman }
  353.         smTransAscii = 0;                            {convert to ASCII}
  354.         smTransNative = 1;                            {convert to font script}
  355.         smTransCase = $FE;                            {convert case for all text}
  356.         smTransSystem = $FF;                            {convert to system script}
  357. { TransliterateText target types for two-byte scripts }
  358.         smTransAscii1 = 2;                            {1-byte Roman}
  359.         smTransAscii2 = 3;                            {2-byte Roman}
  360.         smTransKana1 = 4;                            {1-byte Japanese Katakana}
  361.         smTransKana2 = 5;                            {2-byte Japanese Katakana}
  362.  
  363.         smTransGana2 = 7;                            {2-byte Japanese Hiragana (no 1-byte Hiragana)}
  364.         smTransHangul2 = 8;                            {2-byte Korean Hangul}
  365.         smTransJamo2 = 9;                            {2-byte Korean Jamo}
  366.         smTransBopomofo2 = 10;                            {2-byte Chinese Bopomofo}
  367. { TransliterateText target modifiers }
  368.         smTransLower = $4000;                        {target becomes lowercase}
  369.         smTransUpper = $8000;                        {target becomes uppercase}
  370. { TransliterateText resource format numbers }
  371.         smTransRuleBaseFormat = 1;                            {Rule based trsl resource format }
  372.         smTransHangulFormat = 2;                            {Table based Hangul trsl resource format}
  373. { TransliterateText property flags }
  374.         smTransPreDoubleByting = 1;                            {Convert all text to double byte before transliteration}
  375.         smTransPreLowerCasing = 2;                            {Convert all text to lower case before transliteration}
  376. { TransliterateText source mask - general }
  377.         smMaskAll = $FFFFFFFF;                    {Convert all text}
  378. { TransliterateText source masks }
  379.         smMaskAscii = $00000001;                    {2^smTransAscii}
  380.         smMaskNative = $00000002;                    {2^smTransNative}
  381. { TransliterateText source masks for two-byte scripts }
  382.         smMaskAscii1 = $00000004;                    {2^smTransAscii1}
  383.         smMaskAscii2 = $00000008;                    {2^smTransAscii2}
  384.         smMaskKana1 = $00000010;                    {2^smTransKana1}
  385.         smMaskKana2 = $00000020;                    {2^smTransKana2}
  386.         smMaskGana2 = $00000080;                    {2^smTransGana2}
  387.         smMaskHangul2 = $00000100;                    {2^smTransHangul2}
  388.         smMaskJamo2 = $00000200;                    {2^smTransJamo2}
  389.         smMaskBopomofo2 = $00000400;                    {2^smTransBopomofo2}
  390.  
  391. { Result values from GetScriptManagerVariable and SetScriptManagerVariable calls. }
  392.         smNotInstalled = 0;                            {routine not available in script}
  393.         smBadVerb = -1;                            {Bad verb passed to a routine}
  394.         smBadScript = -2;                            {Bad script code passed to a routine}
  395.  
  396. { Values for script redraw flag. }
  397.         smRedrawChar = 0;                            {Redraw character only}
  398.         smRedrawWord = 1;                            {Redraw entire word (2-byte systems)}
  399.         smRedrawLine = -1;                            {Redraw entire line (bidirectional systems)}
  400. { GetScriptManagerVariable and SetScriptManagerVariable verbs }
  401.         smVersion = 0;                            {Script Manager version number}
  402.         smMunged = 2;                            {Globals change count}
  403.         smEnabled = 4;                            {Count of enabled scripts, incl Roman}
  404.         smBidirect = 6;                            {At least one bidirectional script}
  405.         smFontForce = 8;                            {Force font flag}
  406.         smIntlForce = 10;                            {Force intl flag}
  407.         smForced = 12;                            {Script was forced to system script}
  408.         smDefault = 14;                            {Script was defaulted to Roman script}
  409.         smPrint = 16;                            {Printer action routine}
  410.         smSysScript = 18;                            {System script}
  411.         smLastScript = 20;                            {Last keyboard script}
  412.         smKeyScript = 22;                            {Keyboard script}
  413.         smSysRef = 24;                            {System folder refNum}
  414.         smKeyCache = 26;                            {obsolete}
  415.         smKeySwap = 28;                            {Swapping table handle}
  416.         smGenFlags = 30;                            {General flags long}
  417.         smOverride = 32;                            {Script override flags}
  418.  
  419.         smCharPortion = 34;                            {Ch vs SpExtra proportion}
  420. { New for System 7.0: }
  421.         smDoubleByte = 36;                            {Flag for double-byte script installed}
  422.         smKCHRCache = 38;                            {Returns pointer to KCHR cache}
  423.         smRegionCode = 40;                            {Returns current region code (verXxx)}
  424.         smKeyDisableState = 42;                            {Returns current keyboard disable state}
  425. { GetScriptVariable and SetScriptVariable verbs.}
  426. {Note: Verbs private to script systems are negative, while}
  427. {those general across script systems are non-negative. }
  428.         smScriptVersion = 0;                            {Script software version}
  429.         smScriptMunged = 2;                            {Script entry changed count}
  430.         smScriptEnabled = 4;                            {Script enabled flag}
  431.         smScriptRight = 6;                            {Right to left flag}
  432.         smScriptJust = 8;                            {Justification flag}
  433.         smScriptRedraw = 10;                            {Word redraw flag}
  434.         smScriptSysFond = 12;                            {Preferred system font}
  435.         smScriptAppFond = 14;                            {Preferred Application font}
  436.         smScriptBundle = 16;                            {Beginning of itlb verbs}
  437.         smScriptNumber = 16;                            {Script itl0 id}
  438.         smScriptDate = 18;                            {Script itl1 id}
  439.         smScriptSort = 20;                            {Script itl2 id}
  440.         smScriptFlags = 22;                            {flags word}
  441.         smScriptToken = 24;                            {Script itl4 id}
  442.         smScriptEncoding = 26;                            {id of optional itl5, if present}
  443.         smScriptLang = 28;                            {Current language for script}
  444.  
  445.         smScriptNumDate = 30;                            {Script Number/Date formats.}
  446.         smScriptKeys = 32;                            {Script KCHR id}
  447.         smScriptIcon = 34;                            {ID # of SICN or kcs#/kcs4/kcs8 suite}
  448.         smScriptPrint = 36;                            {Script printer action routine}
  449.         smScriptTrap = 38;                            {Trap entry pointer}
  450.         smScriptCreator = 40;                            {Script file creator}
  451.         smScriptFile = 42;                            {Script file name}
  452.         smScriptName = 44;                            {Script name}
  453. { There is a hole here for old Kanji private verbs 46-76 }
  454. {}
  455. { New for System 7.0: }
  456.         smScriptMonoFondSize = 78;                            {default monospace FOND (hi) & size (lo)}
  457.         smScriptPrefFondSize = 80;                            {preferred FOND (hi) & size (lo)}
  458.         smScriptSmallFondSize = 82;                            {default small FOND (hi) & size (lo)}
  459.         smScriptSysFondSize = 84;                            {default system FOND (hi) & size (lo)}
  460.         smScriptAppFondSize = 86;                            {default app FOND (hi) & size (lo)}
  461.         smScriptHelpFondSize = 88;                            {default Help Mgr FOND (hi) & size (lo)}
  462.         smScriptValidStyles = 90;                            {mask of valid styles for script}
  463.         smScriptAliasStyle = 92;                            {style (set) to use for aliases}
  464. { Special script code values for International Utilities }
  465.         iuSystemScript = -1;                            { <obsolete>  system script }
  466.         iuCurrentScript = -2;                            { <obsolete>  current script (for font of grafPort) }
  467. { Negative verbs for KeyScript }
  468.         smKeyNextScript = -1;                            { Switch to next available script }
  469.         smKeySysScript = -2;                            { Switch to the system script }
  470.         smKeySwapScript = -3;                            { Switch to previously-used script }
  471. { New for System 7.0: }
  472.         smKeyNextKybd = -4;                            { Switch to next keyboard in current keyscript }
  473.  
  474.         smKeySwapKybd = -5;                            { Switch to previously-used keyboard in current keyscript }
  475.         smKeyDisableKybds = -6;                            { Disable keyboards not in system or Roman script }
  476.         smKeyEnableKybds = -7;                            { Re-enable keyboards for all enabled scripts }
  477.         smKeyToggleInline = -8;                            { Toggle inline input for current keyscript }
  478.         smKeyToggleDirection = -9;                            { Toggle default line direction (TESysJust) }
  479.         smKeyNextInputMethod = -10;                            { Switch to next input method in current keyscript }
  480.         smKeySwapInputMethod = -11;                            { Switch to last-used input method in current keyscript }
  481.         smKeyDisableKybdSwitch = -12;                            { Disable switching from the current keyboard }
  482.         smKeySetDirLeftRight = -15;                            { Set default line dir to left-right, align left }
  483.         smKeySetDirRightLeft = -16;                            { Set default line dir to right-left, align right }
  484.         smKeyRoman = -17;                            { Set keyscript to Roman. Does nothing if Roman-only}
  485. {                                        system, unlike KeyScript(smRoman) which forces}
  486. {                                        an update to current default Roman keyboard }
  487. { Bits in the smScriptFlags word}
  488. {(bits above 8 are non-static) }
  489.         smsfIntellCP = 0;                            {Script has intelligent cut & paste}
  490.         smsfSingByte = 1;                            {Script has only single bytes}
  491.         smsfNatCase = 2;                            {Native chars have upper & lower case}
  492.         smsfContext = 3;                            {Script is contextual}
  493.         smsfNoForceFont = 4;                            {Script will not force characters}
  494.         smsfB0Digits = 5;                            {Script has alternate digits at B0-B9}
  495.         smsfAutoInit = 6;                            {Auto initialize the script}
  496.         smsfUnivExt = 7;                            {Script is handled by universal extension}
  497.         smsfSynchUnstyledTE = 8;                            {Script synchronizes for unstyled TE}
  498.         smsfForms = 13;                            {Uses contextual forms for letters}
  499.         smsfLigatures = 14;                            {Uses contextual ligatures}
  500.         smsfReverse = 15;                            {Reverses native text, right-left}
  501. { Bits in the smGenFlags long.}
  502. {First (high-order) byte is set from itlc flags byte. }
  503.         smfShowIcon = 31;                            {Show icon even if only one script}
  504.         smfDualCaret = 30;                            {Use dual caret for mixed direction text}
  505.         smfNameTagEnab = 29;                            {Reserved for internal use}
  506.         smfUseAssocFontInfo = 28;                            {Use the associated font info for FontMetrics calls <48>}
  507.  
  508. { Roman script constants }
  509. { The following are here for backward compatibility, but should not be used. }
  510. { This information should be obtained using GetScript. }
  511.         romanSysFond = $3FFF;                        {system font id number}
  512.         romanAppFond = 3;                            {application font id number}
  513.         romanFlags = $0007;                        {roman settings}
  514. { Script Manager font equates. }
  515.         smFondStart = $4000;                        {start from 16K}
  516.         smFondEnd = $C000;                        {past end of range at 48K}
  517. { Miscellaneous font equates. }
  518.         smUprHalfCharSet = $80;                            {first char code in top half of std char set}
  519. { Character Set Extensions }
  520.         diaeresisUprY = $D9;
  521.         fraction = $DA;
  522.         intlCurrency = $DB;
  523.         leftSingGuillemet = $DC;
  524.         rightSingGuillemet = $DD;
  525.         fiLigature = $DE;
  526.         flLigature = $DF;
  527.         dblDagger = $E0;
  528.         centeredDot = $E1;
  529.         baseSingQuote = $E2;
  530.         baseDblQuote = $E3;
  531.         perThousand = $E4;
  532.         circumflexUprA = $E5;
  533.  
  534.         circumflexUprE = $E6;
  535.         acuteUprA = $E7;
  536.         diaeresisUprE = $E8;
  537.         graveUprE = $E9;
  538.         acuteUprI = $EA;
  539.         circumflexUprI = $EB;
  540.         diaeresisUprI = $EC;
  541.         graveUprI = $ED;
  542.         acuteUprO = $EE;
  543.         circumflexUprO = $EF;
  544.         appleLogo = $F0;
  545.         graveUprO = $F1;
  546.         acuteUprU = $F2;
  547.         circumflexUprU = $F3;
  548.         graveUprU = $F4;
  549.         dotlessLwrI = $F5;
  550.         circumflex = $F6;
  551.         tilde = $F7;
  552.         macron = $F8;
  553.         breveMark = $F9;
  554.  
  555.         overDot = $FA;
  556.         ringMark = $FB;
  557.         cedilla = $FC;
  558.         doubleAcute = $FD;
  559.         ogonek = $FE;
  560.         hachek = $FF;
  561. { TokenType values }
  562.         tokenIntl = 4;                            {the itl resource number of the tokenizer}
  563.         tokenEmpty = -1;                            {used internally as an empty flag}
  564.  
  565.         tokenUnknown = 0;                            {chars that do not match a defined token type}
  566.         tokenWhite = 1;                            {white space}
  567.         tokenLeftLit = 2;                            {literal begin}
  568.         tokenRightLit = 3;                            {literal end}
  569.         tokenAlpha = 4;                            {alphabetic}
  570.         tokenNumeric = 5;                            {numeric}
  571.         tokenNewLine = 6;                            {new line}
  572.         tokenLeftComment = 7;                            {open comment}
  573.         tokenRightComment = 8;                            {close comment}
  574.         tokenLiteral = 9;                            {literal}
  575.         tokenEscape = 10;                            {character escape (e.g. '\' in "\n", "\t")}
  576.         tokenAltNum = 11;                            {alternate number (e.g. $B0-B9 in Arabic,Hebrew)}
  577.         tokenRealNum = 12;                            {real number}
  578.         tokenAltReal = 13;                            {alternate real number}
  579.         tokenReserve1 = 14;                            {reserved}
  580.         tokenReserve2 = 15;                            {reserved}
  581.         tokenLeftParen = 16;                            {open parenthesis}
  582.         tokenRightParen = 17;                            {close parenthesis}
  583.         tokenLeftBracket = 18;                            {open square bracket}
  584.         tokenRightBracket = 19;                            {close square bracket}
  585.  
  586.         tokenLeftCurly = 20;                            {open curly bracket}
  587.         tokenRightCurly = 21;                            {close curly bracket}
  588.         tokenLeftEnclose = 22;                            {open guillemet}
  589.         tokenRightEnclose = 23;                            {close guillemet}
  590.         tokenPlus = 24;
  591.         tokenMinus = 25;
  592.         tokenAsterisk = 26;                            {times/multiply}
  593.         tokenDivide = 27;
  594.         tokenPlusMinus = 28;                            {plus or minus symbol}
  595.         tokenSlash = 29;
  596.         tokenBackSlash = 30;
  597.         tokenLess = 31;                            {less than symbol}
  598.         tokenGreat = 32;                            {greater than symbol}
  599.         tokenEqual = 33;
  600.         tokenLessEqual2 = 34;                            {less than or equal, 2 characters (e.g. <=)}
  601.         tokenLessEqual1 = 35;                            {less than or equal, 1 character}
  602.         tokenGreatEqual2 = 36;                            {greater than or equal, 2 characters (e.g. >=)}
  603.         tokenGreatEqual1 = 37;                            {greater than or equal, 1 character}
  604.         token2Equal = 38;                            {double equal (e.g. ==)}
  605.         tokenColonEqual = 39;                            {colon equal}
  606.  
  607.         tokenNotEqual = 40;                            {not equal, 1 character}
  608.         tokenLessGreat = 41;                            {less/greater, Pascal not equal (e.g. <>)}
  609.         tokenExclamEqual = 42;                            {exclamation equal, C not equal (e.g. !=)}
  610.         tokenExclam = 43;                            {exclamation point}
  611.         tokenTilde = 44;                            {centered tilde}
  612.         tokenComma = 45;
  613.         tokenPeriod = 46;
  614.         tokenLeft2Quote = 47;                            {open double quote}
  615.         tokenRight2Quote = 48;                            {close double quote}
  616.         tokenLeft1Quote = 49;                            {open single quote}
  617.         tokenRight1Quote = 50;                            {close single quote}
  618.         token2Quote = 51;                            {double quote}
  619.         token1Quote = 52;                            {single quote}
  620.         tokenSemicolon = 53;
  621.         tokenPercent = 54;
  622.         tokenCaret = 55;
  623.         tokenUnderline = 56;
  624.         tokenAmpersand = 57;
  625.         tokenAtSign = 58;
  626.         tokenBar = 59;                            {vertical bar}
  627.  
  628.         tokenQuestion = 60;
  629.         tokenPi = 61;                            {lower-case pi}
  630.         tokenRoot = 62;                            {square root symbol}
  631.         tokenSigma = 63;                            {capital sigma}
  632.         tokenIntegral = 64;                            {integral sign}
  633.         tokenMicro = 65;
  634.         tokenCapPi = 66;                            {capital pi}
  635.         tokenInfinity = 67;
  636.         tokenColon = 68;
  637.         tokenHash = 69;                            {e.g. #}
  638.         tokenDollar = 70;
  639.         tokenNoBreakSpace = 71;                            {non-breaking space}
  640.         tokenFraction = 72;
  641.         tokenIntlCurrency = 73;
  642.         tokenLeftSingGuillemet = 74;
  643.         tokenRightSingGuillemet = 75;
  644.         tokenPerThousand = 76;
  645.         tokenEllipsis = 77;
  646.         tokenCenterDot = 78;
  647.         tokenNil = 127;
  648.  
  649.         delimPad = -2;
  650. { obsolete, misspelled token names kept for backward compatibility }
  651.         tokenTilda = 44;
  652.         tokenCarat = 55;
  653.  
  654. { Table selectors for GetItlTable }
  655.         smWordSelectTable = 0;                            { get word select break table from 'itl2' }
  656.         smWordWrapTable = 1;                            { get word wrap break table from 'itl2' }
  657.         smNumberPartsTable = 2;                            { get default number parts table from 'itl4' }
  658.         smUnTokenTable = 3;                            { get unToken table from 'itl4' }
  659.         smWhiteSpaceList = 4;                            { get white space list from 'itl4' }
  660.         iuWordSelectTable = 0;                            { <obsolete>  get word select break table from 'itl2' }
  661.         iuWordWrapTable = 1;                            { <obsolete>  get word wrap break table from 'itl2' }
  662.         iuNumberPartsTable = 2;                            { <obsolete>  get default number parts table from 'itl4' }
  663.         iuUnTokenTable = 3;                            { <obsolete>  get unToken table from 'itl4' }
  664.         iuWhiteSpaceList = 4;                            { <obsolete>  get white space list from 'itl4' }
  665.  
  666. { end of stuff moved from Packages.h }
  667.         tokenOK = 0;                            { TokenResults }
  668.         tokenOverflow = 1;                            { TokenResults }
  669.         stringOverflow = 2;                            { TokenResults }
  670.         badDelim = 3;                            { TokenResults }
  671.         badEnding = 4;                            { TokenResults }
  672.         crash = 5;                            { TokenResults }
  673.  
  674.  
  675.     type
  676.         TokenResults = SInt8;
  677.  
  678.         CharByteTable = packed array[0..255] of CHAR;
  679.  
  680.         TokenType = INTEGER;
  681.  
  682.         DelimType = array[0..1] of TokenType;
  683.  
  684.         CommentType = array[0..3] of TokenType;
  685.  
  686.         TokenRec = record
  687.                 theToken: TokenType;
  688.                 position: Ptr;                                    {pointer into original source}
  689.                 length: LONGINT;                                {length of text in original source}
  690.                 stringPosition: StringPtr;                                {Pascal/C string copy of identifier}
  691.             end;
  692.         TokenRecPtr = ^TokenRec;
  693.  
  694.         TokenBlock = record
  695.                 source: Ptr;                                    {pointer to stream of characters}
  696.                 sourceLength: LONGINT;                                {length of source stream}
  697.                 tokenList: Ptr;                                    {pointer to array of tokens}
  698.                 tokenLength: LONGINT;                                {maximum length of TokenList}
  699.                 tokenCount: LONGINT;                                {number tokens generated by tokenizer}
  700.                 stringList: Ptr;                                    {pointer to stream of identifiers}
  701.                 stringLength: LONGINT;                                {length of string list}
  702.                 stringCount: LONGINT;                                {number of bytes currently used}
  703.                 doString: BOOLEAN;                                {make strings & put into StringList}
  704.                 doAppend: BOOLEAN;                                {append to TokenList rather than replace}
  705.                 doAlphanumeric: BOOLEAN;                                {identifiers may include numeric}
  706.                 doNest: BOOLEAN;                                {do comments nest?}
  707.                 leftDelims: array[0..1] of TokenType;
  708.                 rightDelims: array[0..1] of TokenType;
  709.                 leftComment: array[0..3] of TokenType;
  710.                 rightComment: array[0..3] of TokenType;
  711.                 escapeCode: TokenType;                                {escape symbol code}
  712.                 decimalCode: TokenType;
  713.                 itlResource: Handle;                                    {handle to itl4 resource of current script}
  714.                 reserved: array[0..7] of LONGINT;                {must be zero!}
  715.             end;
  716.         TokenBlockPtr = ^TokenBlock;
  717.  
  718.     function GetSysDirection: INTEGER;
  719.     inline
  720.         $3EB8, $0BAC;            { MOVE.W $0BAC,(SP) }
  721.  
  722.     procedure SetSysDirection (value: INTEGER);
  723.     inline
  724.         $31DF, $0BAC;            { MOVE.W (SP)+,$0BAC }
  725.  
  726.     function FontScript: INTEGER;
  727.     inline
  728.         $2F3C, $8200, $0000, $A8B5;
  729.     function IntlScript: INTEGER;
  730.     inline
  731.         $2F3C, $8200, $0002, $A8B5;
  732.     procedure KeyScript (code: INTEGER);
  733.     inline
  734.         $2F3C, $8002, $0004, $A8B5;
  735.     function CharByte (textBuf: Ptr;
  736.                                     textOffset: INTEGER): INTEGER;
  737.     inline
  738.         $2F3C, $8206, $0010, $A8B5;
  739.     function CharType (textBuf: Ptr;
  740.                                     textOffset: INTEGER): INTEGER;
  741.     inline
  742.         $2F3C, $8206, $0012, $A8B5;
  743.     function IsCmdChar ({CONST}
  744.                                     var event: EventRecord;
  745.                                     test: INTEGER): BOOLEAN;
  746.     inline
  747.         $2F3C, $8206, $FFD0, $A8B5;
  748.     function Transliterate (srcHandle: Handle;
  749.                                     dstHandle: Handle;
  750.                                     target: INTEGER;
  751.                                     srcMask: LONGINT): OSErr;
  752.     inline
  753.         $2F3C, $820E, $0018, $A8B5;
  754.     function ParseTable (var table: CharByteTable): BOOLEAN;
  755.     inline
  756.         $2F3C, $8204, $0022, $A8B5;
  757.     function IntlTokenize (tokenParam: TokenBlockPtr): TokenResults;
  758.     inline
  759.         $2F3C, $8204, $FFFA, $A8B5;
  760.     function FontToScript (fontNumber: INTEGER): INTEGER;
  761.     inline
  762.         $2F3C, $8202, $0006, $A8B5;
  763.     function GetScriptManagerVariable (selector: INTEGER): LONGINT;
  764.     inline
  765.         $2F3C, $8402, $0008, $A8B5;
  766.     function SetScriptManagerVariable (selector: INTEGER;
  767.                                     param: LONGINT): OSErr;
  768.     inline
  769.         $2F3C, $8206, $000A, $A8B5;
  770.     function GetScriptVariable (script: INTEGER;
  771.                                     selector: INTEGER): LONGINT;
  772.     inline
  773.         $2F3C, $8404, $000C, $A8B5;
  774.     function SetScriptVariable (script: INTEGER;
  775.                                     selector: INTEGER;
  776.                                     param: LONGINT): OSErr;
  777.     inline
  778.         $2F3C, $8208, $000E, $A8B5;
  779.  
  780. {  New for 7.1  }
  781.  
  782.     function GetScriptUtilityAddress (selector: INTEGER;
  783.                                     Before: BOOLEAN;
  784.                                     script: ScriptCode): UniversalProcPtr;
  785.     inline
  786.         $2F3C, $C404, $0038, $A8B5;
  787.     procedure SetScriptUtilityAddress (selector: INTEGER;
  788.                                     Before: BOOLEAN;
  789.                                     routineAddr: UniversalProcPtr;
  790.                                     script: ScriptCode);
  791.     inline
  792.         $2F3C, $C008, $003A, $A8B5;
  793.     function GetScriptQDPatchAddress (trapNum: INTEGER;
  794.                                     Before: BOOLEAN;
  795.                                     forPrinting: BOOLEAN;
  796.                                     script: ScriptCode): UniversalProcPtr;
  797.     inline
  798.         $2F3C, $C406, $003C, $A8B5;
  799.     procedure SetScriptQDPatchAddress (trapNum: INTEGER;
  800.                                     Before: BOOLEAN;
  801.                                     forPrinting: BOOLEAN;
  802.                                     routineAddr: UniversalProcPtr;
  803.                                     script: ScriptCode);
  804.     inline
  805.         $2F3C, $C00A, $003E, $A8B5;
  806.     function CharacterByteType (textBuf: Ptr;
  807.                                     textOffset: INTEGER;
  808.                                     script: ScriptCode): INTEGER;
  809.     inline
  810.         $2F3C, $C206, $0010, $A8B5;
  811.     function CharacterType (textBuf: Ptr;
  812.                                     textOffset: INTEGER;
  813.                                     script: ScriptCode): INTEGER;
  814.     inline
  815.         $2F3C, $C206, $0012, $A8B5;
  816.     function TransliterateText (srcHandle: Handle;
  817.                                     dstHandle: Handle;
  818.                                     target: INTEGER;
  819.                                     srcMask: LONGINT;
  820.                                     script: ScriptCode): OSErr;
  821.     inline
  822.         $2F3C, $C20E, $0018, $A8B5;
  823.     function FillParseTable (var table: CharByteTable;
  824.                                     script: ScriptCode): BOOLEAN;
  825.     inline
  826.         $2F3C, $C204, $0022, $A8B5;
  827.  
  828. { Moved from Packages.h }
  829.  
  830.     function GetIntlResource (theID: INTEGER): Intl0Hndl;
  831.     inline
  832.         $3F3C, $0006, $A9ED;
  833.     procedure SetIntlResource (refNum: INTEGER;
  834.                                     theID: INTEGER;
  835.                                     intlHandle: Intl0Hndl);
  836.     inline
  837.         $3F3C, $0008, $A9ED;
  838.     procedure ClearIntlResourceCache;
  839.     inline
  840.         $3F3C, $0018, $A9ED;
  841.     procedure GetIntlResourceTable (script: ScriptCode;
  842.                                     tableCode: INTEGER;
  843.                                     var itlHandle: Intl0Hndl;
  844.                                     var offset: LONGINT;
  845.                                     var length: LONGINT);
  846.     inline
  847.         $3F3C, $0024, $A9ED;
  848.  
  849. implementation
  850. end.